home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C/C++ Users Group Library 1996 July
/
C-C++ Users Group Library July 1996.iso
/
listings
/
v_11_06
/
1106112a
< prev
next >
Wrap
Text File
|
1993-03-28
|
924b
|
44 lines
main()
{
char *error_ptr;
if ((error_ptr = initialize()) != NULL)
{
fprintf(stderr, "error during %s", error_ptr);
exit(1)
}
// processing ...
(void) cleanup(2, NULL);
exit(0);
}
int fd;
char *buf;
char *initialized(void)
{
if((buf = malloc(BUFSIZ)) == NULL)
return cleanup(0, "malloc");
// uses cleanup for consistency
if ((fd = open("filename", O_RDONLY)) < 0)
return cleanup(1, "open");
if (read(fd, buf, sizeof(buf) < 0)
return cleanup(2, "read");
return NULL;
}
char *cleanup(int start_from, char *where_failed)
{
switch (start_from)
{
case 2:
close(fd);
case 1:
free(buf);
}
// could instead print error message here
// if where_failed ! = Null
return where_failed;
}